package com.lemzdo.community.dto;

import com.lemzdo.community.exception.CustomizeException;
import com.lemzdo.community.exception.ErrCodeEnum;
import com.sun.org.apache.regexp.internal.RE;
import lombok.Data;

import java.util.List;


@Data//自定义一个dto 用于返回json格式串给前端，存放code错误代码和message错误信息
public class ResultDTO<T> {
    private String message;
    private Integer code;
    private T Data;

    /**
     * 手写一个errorOf方法 传递code和message 以json串的格式给前端
     * @param code 需要传给前端的code
     * @param message 需要传给前端的message
     * @return 返回一个resultDTO对象给前端（json串）
     */
    public static ResultDTO errorOf(Integer code,String message){
        ResultDTO resultDTO = new ResultDTO();
        resultDTO.code = code;
        resultDTO.message = message;
        return resultDTO;
    }

    /**
     * 手写一个errorOf方法 传递我们自定义的错误码枚举 以json串的格式给前端
     * @param errCode 相应的错误码枚举
     * @return 返回一个resultDTO（json格式串）对象给前端 code和message都是从错误码枚举中获取
     */
    public static ResultDTO errorOf(ErrCodeEnum errCode) {
        //直接调用上面定义的普通传code和msg的方法 将枚举的code和msg一一传进去即可
        return errorOf(errCode.getErrCode(),errCode.getErrMsg());
    }

    /**
     *
     * @param e 我们自定义的错误
     * @return 返回一个resultDTO（json格式串）对象给前端
     */
    public static ResultDTO errorOf(CustomizeException e) {
        return errorOf(e.getErrCode(),e.getErrMsg());
    }


    /**
     *  当评论成功，返回信息给前端 1级评论
     * @return 返回一个resultDTO（json格式串）对象给前端
     */
    public static ResultDTO successOf() {
        ResultDTO resultDTO = new ResultDTO();
        resultDTO.setCode(200);
        resultDTO.setMessage("评论成功");
        return resultDTO;
    }

    /**
     *  当评论成功，返回信息给前端 2级评论
     * @param t 泛型
     * @return
     */
    public static <T> ResultDTO okOf(T t) {
        ResultDTO resultDTO = new ResultDTO();
        resultDTO.setCode(200);
        resultDTO.setMessage("请求成功");
        resultDTO.setData(t);
        return resultDTO;
    }
}
